﻿using System.Collections.Generic;
using Neturion.Dados;
using Neturion.IRepositorios;
using Neturion.Repositorios;
using Neturion.Utils;

namespace Neturion.Negocios
{
    /// <summary>
    /// 
    /// </summary>
    public class NegocioUnidadeFederativa
    {
        private IRepositorioUnidadeFederativa _repositorioUnidadeFederativa;

        /// <summary>
        /// 
        /// </summary>
        public NegocioUnidadeFederativa()
        {
            _repositorioUnidadeFederativa = new RepositorioUnidadeFederativa();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="unidadeFederativa"></param>
        /// <returns></returns>
        public UnidadeFederativa Inserir(UnidadeFederativa unidadeFederativa)
        {
            unidadeFederativa.Codigo = GeradorCodigo.GerarCodigo(1);
            unidadeFederativa.Codigo += (_repositorioUnidadeFederativa.ObterUltimoIdCodigoInteiro() + 1).ToString();
            unidadeFederativa.Codigo += GeradorCodigo.GerarCodigo(1, unidadeFederativa.Codigo);
            return _repositorioUnidadeFederativa.Inserir(unidadeFederativa);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="unidadeFederativa"></param>
        /// <returns></returns>
        public UnidadeFederativa Atualizar(UnidadeFederativa unidadeFederativa)
        {
            return _repositorioUnidadeFederativa.Atualizar(unidadeFederativa);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="unidadeFederativa"></param>
        public void Excluir(UnidadeFederativa unidadeFederativa)
        {
            UnidadeFederativa unidadeFederativaTmp = ObterPorId(unidadeFederativa.UnidadeFederativaId);
            _repositorioUnidadeFederativa.Excluir(unidadeFederativaTmp);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public IList<UnidadeFederativa> ObterTodos()
        {
            return _repositorioUnidadeFederativa.ObterTodos();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public UnidadeFederativa ObterPorId(int id)
        {
            return _repositorioUnidadeFederativa.ObterPorId(id);
        }

        public UnidadeFederativa ObterPorCodigo(string codigo, Usuario usuarioPermissao)
        {
            return _repositorioUnidadeFederativa.ObterPorCodigo(codigo);
        }

        public UnidadeFederativa ObterPorSigla(string sigla, Usuario usuarioPermissao)
        {
            return _repositorioUnidadeFederativa.ObterPorSigla(sigla);
        }
    }
}